unit Rel_TelaEspelhoPed;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Rel_Tela_Pad, StdCtrls, Buttons, Db, DBClient, Grids, DBGrids;

type
  TFrmRel_TelaEspelhoPed = class(TFrmRel_Tela_Pad)
    bdetalhes: TBitBtn;
    dbgrid: TDBGrid;
    dtsPedidos: TDataSource;
    cdsPedidos: TClientDataSet;
    cdsPedidospedido: TStringField;
    cdsPedidosdata_pedido: TStringField;
    cdsPedidosdata_chegada: TStringField;
    cdsPedidossupervisor: TStringField;
    cdsPedidosrepresentante: TStringField;
    cdsPedidoscnpj: TStringField;
    cdsPedidosnome_cliente: TStringField;
    cdsPedidosent_codigo: TStringField;
    cdsPedidosemp_codigo: TStringField;
    cdsPedidosalocacao: TStringField;
    cdsPedidosPED_PEDCLIE: TStringField;
    cdsPedidosPED_PEDREPRE: TStringField;
    procedure FormActivate(Sender: TObject);
    procedure bdetalhesClick(Sender: TObject);
    procedure dbgridDblClick(Sender: TObject);
    procedure dbgridTitleClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  FrmRel_TelaEspelhoPed: TFrmRel_TelaEspelhoPed;
  tela_pedempresas: string;
  tela_peddataini: TDateTime;
  tela_peddatafim: TDateTime;
  tela_pedentini: string;
  tela_pedentfim: string;
  tela_pedsituacao1: string;
  tela_pedsituacao2: string;
  tela_pedtipo: byte;

implementation

uses dm, dbtables, clsEntidade, clsBackup_Pedido, Detalhe_pedido, clsBackup_PedCpa,
  clsItensCarga;

{$R *.DFM}

procedure TFrmRel_TelaEspelhoPed.FormActivate(Sender: TObject);
var
  bkp_pedido: string;
  tq: TQuery;
  backup_pedido: TBackupPedido;
  backup_compra: TBackup_PedCpa;
  entidade: TEntidade;
  item_carga: TItensCarga;
begin
  cdsPedidos.CreateDataSet;
  cdsPedidos.Open;

  backup_pedido := TBackupPedido.Create;
  backup_compra := TBackup_PedCpa.Create;
  entidade := TEntidade.Create;
  item_carga := TItensCarga.Create;

  tq := TQuery.Create(self);
  tq.databasename := dmint.db.databasename;
  tq.active := false;
  tq.sql.clear;
  tq.params.clear;

  if tela_pedtipo = 0 then begin // Venda
    tq.sql.add('Select * from pedidosvenda where emp_codigo in (' + tela_pedempresas + ') and ' +
      'ped_dataped>=:a and ped_dataped<=:b and ent_codigo>=:c and ent_codigo<=:d ');
    if (tela_pedsituacao1 <> '') and (tela_pedsituacao2 <> '') then
      tq.sql.add(' and (ped_situacao = :e or ped_situacao = :f)');
    tq.params[0].asdatetime := tela_peddataini;
    tq.params[1].asdatetime := tela_peddatafim;
    tq.params[2].asstring := tela_pedentini;
    tq.params[3].asstring := tela_pedentfim;
    if (tela_pedsituacao1 <> '') and (tela_pedsituacao2 <> '') then begin
      tq.params[4].asstring := tela_pedsituacao1;
      tq.params[5].asstring := tela_pedsituacao2;
    end;
    tq.open;

    while not tq.eof do begin
      bkp_pedido := backup_pedido.RecuperarPedido2(tq.fieldbyname('ped_numero').asstring);
      if bkp_pedido <> '' then begin
        entidade.Recuperar(tq.fieldbyname('ent_codigo').asstring);

        if cdsPedidos.FindKey([bkp_pedido]) then begin
          cdsPedidos.Edit;
        end else begin
          cdsPedidos.Insert;
          cdsPedidos.FieldByName('Pedido').asstring := bkp_pedido;
        end;

        cdsPedidos.FieldByName('alocacao').asstring := item_carga.Retorna_Carga(tq.fieldbyname('ped_numero').asstring);
        cdsPedidos.FieldByName('ent_codigo').asstring := tq.fieldbyname('ent_codigo').asstring;
        cdsPedidos.FieldByName('emp_codigo').asstring := tq.fieldbyname('emp_codigo').asstring;
        cdsPedidos.FieldByName('data_pedido').asstring := tq.fieldbyname('ped_dataped').asstring;
        cdsPedidos.FieldByName('data_chegada').asstring := tq.fieldbyname('ped_datache').asstring;
        cdsPedidos.FieldByName('supervisor').asstring := tq.fieldbyname('sup_codigo').asstring;
        cdsPedidos.FieldByName('representante').asstring := tq.fieldbyname('rep_codigo').asstring;
        cdsPedidos.FieldByName('nome_cliente').asstring := entidade.Ent_Nome;
        cdsPedidos.FieldByName('PED_PEDREPRE').asstring := tq.fieldbyname('PED_PEDREPRE').asstring;
        cdsPedidos.FieldByName('PED_PEDCLIE').asstring := tq.fieldbyname('PED_PEDCLIE').asstring;

        if entidade.ent_cnpj <> '' then begin
          cdsPedidos.FieldByName('cnpj').asstring := copy(entidade.Ent_Cnpj, 1, 2) + '.' +
            copy(entidade.Ent_Cnpj, 3, 3) + '.' +
            copy(entidade.Ent_Cnpj, 6, 3) + '/' +
            copy(entidade.Ent_Cnpj, 9, 4) + '-' +
            copy(entidade.Ent_Cnpj, 13, 2);
        end else
          if entidade.ent_cpf <> '' then begin
          cdsPedidos.FieldByName('cnpj').asstring := copy(entidade.Ent_Cpf, 1, 3) + '.' +
            copy(entidade.Ent_Cpf, 4, 3) + '.' +
            copy(entidade.Ent_Cpf, 7, 3) + '-' +
            copy(entidade.Ent_Cpf, 10, 2);
        end else begin
          cdsPedidos.FieldByName('cnpj').asstring := 'Sem CNPJ/CPF';
        end;
        cdsPedidos.Post;
      end;
      tq.next;
    end;

  end else begin // Compra
    if tela_pedsituacao1 = 'X' then begin
      tq.sql.add('Select p.* ' +
        'from PedidoCompra p,Backup_PedCpa b, ItemPedCompra I, condfaturamento c  ' +
        'where p.Pedc_numero  = i.pedc_numero and Itpc_Qtde_Pendente <> 0 ' +
        'and c.CONF_CODIGO = p.CONF_CODIGO ' +
        'and (itpc_controle  is null or CONF_PERC1=0)' +
        'and p.Emp_Codigo in ' +
        '(' + tela_pedempresas + ') and p.Pedc_DataPed>=:a and p.Pedc_DataPed<=:b and ' +
        'Pedc_Situacao=:c and p.Ent_Codigo>=:d and p.Ent_Codigo<=:e and ' +
        'b.Pedc_Numero=p.Pedc_Numero order by b.Bkp_Pedido ');
      tq.params[0].asdatetime := tela_peddataini;
      tq.params[1].asdatetime := tela_peddatafim;
      tq.params[2].asstring := 'F';
      tq.params[3].asstring := tela_pedentini;
      tq.params[4].asstring := tela_pedentfim;
    end else begin
      tq.sql.add('Select * from PedidoCompra where Emp_Codigo in (' + tela_pedempresas + ') and ' +
        'Pedc_dataped>=:a and Pedc_dataped<=:b and Ent_Codigo>=:c and Ent_Codigo<=:d ');
      if (tela_pedsituacao1 <> '') then
        tq.SQL.Add('and Pedc_situacao=:e');
      tq.params[0].asdatetime := tela_peddataini;
      tq.params[1].asdatetime := tela_peddatafim;
      tq.params[2].asstring := tela_pedentini;
      tq.params[3].asstring := tela_pedentfim;
      if (tela_pedsituacao1 <> '') then
        tq.params[4].asstring := tela_pedsituacao1;
    end;
    tq.open;
    while not tq.eof do begin
      bkp_pedido := backup_compra.Retorna_Backup(tq.fieldbyname('pedc_numero').asstring, tq.fieldbyname('ent_codigo').asstring);
      if bkp_pedido <> '' then begin
        entidade.Recuperar(tq.fieldbyname('ent_codigo').asstring);

        if cdsPedidos.FindKey([bkp_pedido]) then begin
          cdsPedidos.Edit;
        end else begin
          cdsPedidos.Insert;
          cdsPedidos.FieldByName('Pedido').asstring := bkp_pedido;
        end;

        cdsPedidos.FieldByName('ent_codigo').asstring := tq.fieldbyname('ent_codigo').asstring;
        cdsPedidos.FieldByName('emp_codigo').asstring := tq.fieldbyname('emp_codigo').asstring;
        cdsPedidos.FieldByName('data_pedido').asstring := tq.fieldbyname('pedc_dataped').asstring;
        cdsPedidos.FieldByName('data_chegada').asstring := tq.fieldbyname('pedc_datache').asstring;
        cdsPedidos.FieldByName('supervisor').asstring := '';
        cdsPedidos.FieldByName('representante').asstring := '';
        cdsPedidos.FieldByName('nome_cliente').asstring := entidade.Ent_Nome;

        if entidade.ent_cnpj <> '' then begin
          cdsPedidos.FieldByName('cnpj').asstring := copy(entidade.Ent_Cnpj, 1, 2) + '.' +
            copy(entidade.Ent_Cnpj, 3, 3) + '.' +
            copy(entidade.Ent_Cnpj, 6, 3) + '/' +
            copy(entidade.Ent_Cnpj, 9, 4) + '-' +
            copy(entidade.Ent_Cnpj, 13, 2);
        end else
          if entidade.ent_cpf <> '' then begin
          cdsPedidos.FieldByName('cnpj').asstring := copy(entidade.Ent_Cpf, 1, 3) + '.' +
            copy(entidade.Ent_Cpf, 4, 3) + '.' +
            copy(entidade.Ent_Cpf, 7, 3) + '-' +
            copy(entidade.Ent_Cpf, 10, 2);
        end else begin
          cdsPedidos.FieldByName('cnpj').asstring := 'Sem CNPJ/CPF';
        end;
        cdsPedidos.Post;
      end;
      tq.next;
    end;
  end;
  cdsPedidos.First;
  backup_compra.free;
  backup_pedido.free;
  item_carga.free;
  entidade.free;
  tq.close;
  tq.free;
end;

procedure TFrmRel_TelaEspelhoPed.bdetalhesClick(Sender: TObject);
var
  f: TFrmDetalhe_pedido;
begin
  inherited;
  f := TFrmDetalhe_pedido.Create(self);
  f.bkp_pedido := cdsPedidos.fieldbyname('pedido').asstring;
  f.Cliente := cdsPedidos.fieldbyname('cnpj').asstring + '-' + cdsPedidos.fieldbyname('nome_cliente').asstring;
  f.Cod_Cliente := cdsPedidos.fieldbyname('ent_codigo').asstring;
  f.Detalhe_situacao := tela_pedsituacao1;
  f.Detalhe_tipo := tela_pedtipo;
  f.tela_pedempresas := tela_pedempresas;
  try
    f.ShowModal;
  finally
    f.free;
  end;
end;

procedure TFrmRel_TelaEspelhoPed.dbgridDblClick(Sender: TObject);
begin
  inherited;
  bdetalhesClick(sender);
end;

procedure TFrmRel_TelaEspelhoPed.dbgridTitleClick(Column: TColumn);
begin
  inherited;
  cdsPedidos.IndexFieldNames := Column.FieldName;
end;

end.

